iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 15
0
自我挑戰組

Hello Swift系列 第 15

15/30 UI元件之TableViewController-2

  • 分享至 

  • xImage
  •  

(承14/30 UI元件之TableViewController-1)

轉場時觸發的事件prepare(for segue:):

  1. 如果segue的identifier是showDetail,就以destination的屬性達到轉換viewController的目的轉型成DetailViewController,如果轉型成功就存入常數dvc(Destination View Controller)
  2. 找到目前所選cell的indexPath(optional值)
  3. 如果有值再以.row取得所選到的列
  4. 如果能存入selectedRow,再以他當索引值至animalArray取值,用以傳到下一個畫面
  5. 取到的值傳到下一個畫面的infoFromViewOne的屬性
  6. 設置標題
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showDetail"{
        if let dvc = segue.destination as? DetailViewController{
            let selectedIndexPath = self.tableView.indexPathForSelectedRow
            //optional biding 所選的列,或是沒有選到列
            if let selectedRow = selectedIndexPath?.row{
                dvc.infoFromViewOne = animalArray[selectedRow]
                dvc.navigationItem.title = animalArray[selectedRow]
  • 客製化TableViewCell
    如果轉型成功,就用客製化的cell顯示資料:
if let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? SpecialTableViewCell{
    cell.specialLabel.text = animalArray[indexPath.row]
    cell.specialImageView.image = UIImage(named: animalArray[indexPath.row])
    return cell

如果轉型失敗,就用預設的cell顯示資料:

else{
    let cell = UITableViewCell()
    cell.textLabel?.text = animalArray[indexPath.row]
    cell.imageView?.image = UIImage(named: animalArray[indexPath.row])
    return cell
}

Results

http://sendvid.com/ddjz5z5q


上一篇
14/30 UI元件之TableViewController-1
下一篇
16/30 轉來轉去的Segues-1
系列文
Hello Swift30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言